# -*- coding: UTF-8 -*-
'''
@Project ：pythonProject 
@File    ：positionDemo.py
@Author  ：siwei
@Date    ：2023/5/16 23:52 
'''
# 位运算符: 将数据转成二进制进行计算 0,1    可将1看做true,0看做false
# &位与  |位或  <<左移位运算符   >>右移位运算符

# &位与:对应数位都是1,结果才为1,否则为0       全1则1,其余为0(有false则false)
print(bin(8)[-4:])
print(bin(4)[-3:])   # bin() 获取数字的二进制

print(4&8)     # 100与1000的对应数位,全1则1,其余为0.   结果为0000---->0

print("-----------------------------------")
# |位或:对应数位都是0,结果才为0,否则为1       有1则1,其余为0(有true则true)
print(bin(8)[-4:])
print(bin(4)[-3:])
print(4|8)     # 100与1000的对应数位,有1则1,其余为0    结果为1100---->12

print("-----------------------------------")
# <<左移位运算符:高位溢出,低位补0
# 00000100---->00001000  左移一位,相当于乘以2
print(4<<1)  # 8的二进制00001000

# >>右移位运算符:高位补0,低位截断
# 00000100---->00000010  右移一位,相当于除以2
print(4>>1)  # 2的二进制00000010